package day14;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * @author Xiao
 * @date 2021/8/8
 */
public class AtomicIntegerDemo01 {
    /**
     * 原子类AtomicInteger
     * 构造方法：
     * 	public AtomicInteger()：初始化一个默认值为0的原子型Integer
     * 	public AtomicInteger(int initialValue)：初始化一个指定值的原子型Integer
     * 成员方法：
     * 	int get()：获取值
     * 	int getAndIncrement()：以原子方式将当前值加1，返回自增前的值。
     * 	int incrementAndGet()：以原子方式将当前值加1，返回自增后的值。
     * 	int addAndGet(int data)：以原子方式将输入的数值与实例中的值（AtomicInteger里的value）相加，并返回结果。
     * 	int getAndSet(int value)：以原子方式设置为newValue的值，并返回旧值。
     */
    public static void main(String[] args) {
        AtomicInteger ai = new AtomicInteger();
        System.out.println(ai);           //0
        AtomicInteger ai1 = new AtomicInteger(10);
        System.out.println(ai1);          //10
        int i1 = ai1.get();
        System.out.println(i1);           //10
        int i2 = ai1.getAndIncrement();
        System.out.println(i2);           //10
        System.out.println(ai1);          //11
        int i3 = ai1.incrementAndGet();
        System.out.println(i3);           //12
        System.out.println(ai1);           //12
        int i4 = ai1.addAndGet(10);
        System.out.println(i4);            //22
        System.out.println(ai1);           //22
        int i5 = ai1.getAndAdd(10);
        System.out.println(i5);           //22
        System.out.println(ai1);          //32
    }
}
